package com.share.common.enums;

import lombok.Getter;

import java.util.Optional;

/**
 * 需要返回给前端看到的错误信息在这里定义(错误使用50000以下的)
 * <p>
 * 错误码是五个数
 *
 * @author syq
 * @data 2019/6/17
 */
@Getter
public enum ErrMsgEnum {
    /*code值别改*/
    FAILURE("99999", "操作失败"),
    FAILURE_SYS_ERROR("88888", "系统异常"),
    SUCCESS("00000", "操作成功"),

    HYSTRIX_HAPPEN("10111", "熔断发生了"),//京东重定向错误--京东授权问题

    /*code值别改*/
    LOGIN_JD_AUTH_ERR("10901", "京东授权失败,请稍后重试"),//京东重定向错误--京东授权问题
    LOGIN_SYS_INIT_ERR("10902", "系统初始化错误"),//系统初始化错误--内部系统问题
    LOGIN_ERR("10903", "登录失败,请稍后重试"),//登录异常--数据异常
    loginInfoMissErr("10904", "登录信息丢失"),//登录异常----拦截器中错误码

    USER_OR_PW_ERR("10003", "账号或密码错误"),//登录异常--账号或密码错误
    REGISTER_FAIL("88888", "注册失败"),
    LOGIN_TIMEOUT("10000", "登录超时"),
    UN_PERMISSION("10002", "权限不足"),
    RES_DELETED("00001", "资源已删除");

    public String code;
    public String name;

    ErrMsgEnum(String code, String name) {
        this.code = code;
        this.name = name;
    }

    public static ErrMsgEnum toEnum(final String code) {
        for (final ErrMsgEnum tag : ErrMsgEnum.values()) {
            if (tag.code.equals(code)) {
                return tag;
            }
        }
        return null;
    }

    public static String toName(final String code) {
        return Optional.ofNullable(toEnum(code)).map(item -> item.name).orElse(null);
    }
}
